home *** CD-ROM | disk | FTP | other *** search
/ FishMarket 1.0 / FishMarket v1.0.iso / fishies / 001-025 / disk_006 / microemacs / port-handler.asm < prev    next >
Assembly Source File  |  1992-05-06  |  16KB  |  532 lines

  1. StartModule     DC.L    (EndModule-StartModule)/4
  2. EntryPoint      EQU     *
  3. #
  4. # // "Include files containing useful constants"
  5. #
  6. # GET "LIBHDR"
  7. # GET "IOHDR"
  8. # GET "MANHDR"
  9. # GET "EXECHDR"
  10. #
  11. # // This is a handler for the port tasks
  12. #
  13. # // When the task is creates, the parameter packet contains
  14. # // parm.pkt!pkt.arg1 = BPTR to BCPL string of device name, i.e.  ("SKEL:")
  15. # // parm.pkt!pkt.arg2 = extra info (if needed)
  16. # // parm.pkt!pkt.arg3 = BPTR to device info node
  17. #
  18. # MANIFEST
  19. # $(
  20. #    IO.blocksize = 30 // size of devices IO block
  21. # $)
  22. #
  23. # LET start(parm.pkt) BE
  24. # $(
  25. 310044:         MOVE.L  D1,D2 
  26. # LET extrainfo = parm.pkt!pkt.arg2
  27. 310046:         LSL.L   #2,D2 
  28. 310048:         MOVE.L  18(A0,D2.L),4(A1) 
  29. # LET read.pkt = 0
  30. 31004E:         CLR.L   8(A1) 
  31. # LET write.pkt = 0
  32. 310052:         CLR.L   C(A1) 
  33. #
  34. # LET openstring = parm.pkt!pkt.arg1
  35. 310056:         MOVE.L 14(A0,D2.L),10(A1) 
  36. #
  37. # LET inpkt  = VEC pkt.res1
  38. 31005C:         MOVE.L #18,D3 
  39. 31005E:         ADD.L A1,D3 
  40. 310060:         LSR.L #2,D3 
  41. 310062:         MOVE.L D3,14(A1)
  42. # LET outpkt  = VEC pkt.res1
  43. 310066:         MOVE.L #2C,D4 
  44. 310068:         ADD.L A1,D4 
  45. 31006A:         LSR.L #2,D4 
  46. 31006C:         MOVE.L D4,28(A1) 
  47. # LET IOB     = VEC IO.blocksize
  48. 310070:         MOVE.L #40,D5 
  49. 310072:         ADD.L A1,D5 
  50. 310074:         LSR.L #2,D5 
  51. 310076:         MOVE.L D5,3C(A1) 
  52. # LET IOIBO    = VEC IO.blocksize
  53. 31007A:         MOVE.L #C0,D6 
  54. 310080:         ADD.L A1,D6 
  55. 310082:         LSR.L #2,D6 
  56. 310084:         MOVE.L D6,BC(A1) 
  57.  
  58. # LET error = FALSE
  59. 310088:         CLR.L 13C(A1) 
  60. #
  61. # TEST extrainfo = 0 THEN    // is it a open on SER:
  62. 31008C:         TST.L 4(A1) 
  63. 310090:         BNE 3100A0 
  64. #     LET devname = "serial.device*X00"
  65. 310094:         LEA 464(A4),A3 
  66. 310098:         MOVE.L A3,D1 
  67. 31009A:         LSR.L #2,D1 
  68. # ELSE
  69. 31009C:         BRA 3100BE 
  70. #     TEST extrainfo = 1 THEN   // is it an open on PAR:
  71. 3100A0:         MOVE.L #1,D1 
  72. 3100A2:         CMP.L 4(A1),D1 
  73. 3100A6:         BNE 3100B6
  74. #        LET devname = "parallel.device*X00"
  75. 3100AA:         LEA 474(A4),A3 
  76. 3100AE:         MOVE.L A3,D1 
  77. 3100B0:         LSR.L #2,D1
  78. #     ELSE 
  79. 3100B2:         BRA 3100BE 
  80. #        LET devname = "printer.device*X00"
  81. 3100B6:         LEA 488(A4),A3 
  82. 3100BA:         MOVE.L A3,D1 
  83. 3100BC:         LSR.L #2,D1
  84. 3100BE:         MOVE.L D1,140(A1) 
  85. #
  86. # LET ?? = TRUE
  87. 3100C2:         MOVE.L #FFFFFFFF,D2 
  88. 3100C4:         MOVE.L D2,144(A1) 
  89. #
  90. 3100C8:         LEA 498(A4),A3 
  91. 3100CC:         MOVE.L A3,D3 
  92. 3100CE:         LSR.L #2,D3 
  93. 3100D0:         MOVE.L D3,148(A1) 
  94. #
  95. # LET ?? = 0
  96. 3100D4:         CLR.L 14C(A1) 
  97. #
  98. # LET ?? = 0
  99. 3100D8:         CLR.L 150(A1) 
  100. #
  101. # LET ?? = node = parm.pkt!pkt.arg3
  102. 3100DC:         MOVE.L (A1),D4 
  103. 3100DE:         LSL.L #2,D4 
  104. 3100E0:         MOVE.L 1C(A0,D4.L),154(A1) 
  105. #
  106. # FOR i=0 to IO.blocksize DO IOB!i := 0
  107. 3100E6:         CLR.L   158(A1) 
  108. 3100EA:         MOVE.L  #1E,D5 
  109. 3100EC:         MOVE.L  D5,15C(A1) 
  110. 3100F0:         BRA     310106 
  111. 3100F4:         MOVE.L  3C(A1),D1 
  112. 3100F8:         ADD.L   158(A1),D1 
  113. 3100FC:         LSL.L   #2,D1 
  114. 3100FE:         CLR.L   0(A0,D1.L) 
  115. 310102:         ADD.L   #1,158(A1) 
  116. 310106:         MOVE.L  15C(A1),D1 
  117. 31010A:         CMP.L   158(A1),D1 
  118. 31010E:         BGE     3100F4 
  119.  
  120. # IF OpenDevice( IOB, devname, 0, 0) = 0
  121. 310110:         MOVE.L #0,D4 
  122. 310112:         MOVE.L D4,D3 
  123. 310114:         MOVE.L 140(A1),D2 
  124. 310118:         MOVE.L 3C(A1),D1 
  125. 31011C:         MOVE.L #164,D0 
  126. 310122:         MOVE.L 7C(A2),A4 
  127. 310126:         JSR (A5) 
  128. 310128:         TST.L D1 
  129. 31012A:         BNE 310134 
  130. #    error := TRUE
  131. 31012E:         MOVE.L #FFFFFFFF,D1 
  132. 310130:         MOVE.L D1,13C(A1) 
  133. #
  134. # IF error THEN
  135. 310134:         TST.L 13C(A1) 
  136. 310138:         BEQ 310154 
  137. #    $( returnpkt(parm.pkt, FALSE, error, objectinuse)
  138. 31013C:         MOVE.L #CA,D3 
  139. 310142:         MOVE.L #0,D2 
  140. 310144:         MOVE.L (A1),D1 
  141. 310146:         MOVE.L #164,D0 
  142. 31014C:         MOVE.L C4(A2),A4 
  143. 310150:         JSR (A5)
  144. #    return
  145. 310152:         JMP (A6) 
  146. #    $)
  147. #
  148. # // Copy all the necessary info to the Output buffer too.
  149. #
  150. # FOR i=0 TO IO.blocksize DO IOBO!i := IOB!
  151. 310154:         CLR.L 158(A1) 
  152. 310158:         MOVE.L #1E,D1 
  153. 31015A:         MOVE.L D1,15C(A1) 
  154. 31015E:         BRA 310180 
  155. 310162:         MOVE.L 3C(A1),D1 
  156. 310166:         ADD.L 158(A1),D1 
  157. 31016A:         LSL.L #2,D1 
  158. 31016C:         MOVE.L BC(A1),D2 
  159. 310170:         ADD.L 158(A1),D2 
  160. 310174:         LSL.L #2,D2 
  161. 310176:         MOVE.L 0(A0,D1.L),0(A0,D2.L) 
  162. 31017C:         ADD.L #1,158(A1) 
  163. 310180:         MOVE.L 15C(A1),D1 
  164. 310184:         CMP.L 158(A1),D1 
  165. 310188:         BGE 310162
  166. #
  167. # TEST extrainfo = 2 &&         // did they ask for the printer
  168. 31018A:         MOVE.L #2,D2 
  169. 31018C:         CMP.L 4(A1),D2 
  170. 310190:         BNE 3101F8 
  171. #      LEN(openstring < 4) THEN // with a name longer than PRT:?
  172. 310194:         MOVE.L 10(A1),D3 
  173. 310198:         LSL.L #2,D3 
  174. 31019A:         MOVE.L #0,D4 
  175. 31019C:         MOVE.B 0(A0,D3.L),D4 
  176. 3101A0:         MOVE.L #4,D5 
  177. 3101A2:         CMP.L D5,D4 
  178. 3101A4:         BLE 3101F8
  179. #    $(
  180. 3101A8:         MOVE.L 148(A1),D4 
  181. 3101AC:         LSL.L #2,D4 
  182. 3101AE:         MOVE.L #0,D6 
  183. 3101B0:         MOVE.B 0(A0,D4.L),D6 
  184. 3101B4:         MOVE.L D6,D4 
  185. 3101B6:         MOVE.L 16C(A1),D3 
  186. 3101BA:         MOVE.L #3,D2 
  187. 3101BC:         MOVE.L BC(A1),D1 
  188. 3101C0:         MOVE.L #164,D0 
  189. 3101C6:         MOVE.L 18(A2),A4 
  190. 3101CA:         JSR (A5) 
  191. 3101CC:         MOVE.L 148(A1),D1 
  192. 3101D0:         LSL.L #2,D1 
  193. 3101D2:         ADD.L #1,D1 
  194. 3101D4:         MOVE.L D1,D3 
  195. 3101D6:         MOVE.L #28,D2 
  196. 3101D8:         MOVE.L BC(A1),D1 
  197. 3101DC:         MOVE.L #164,D0 
  198. 3101E2:         MOVE.L 1BC(A2),A4 
  199. 3101E6:         JSR (A5) 
  200. 3101E8:         MOVE.L BC(A1),D1 
  201. 3101EC:         MOVE.L #164,D0 
  202. 3101F2:         MOVE.L 54(A2),A4 
  203. 3101F6:         JSR (A5)
  204. #    $) 
  205. #
  206. # outpkt!pkt.type := act.write
  207. 3101F8:         MOVE.L 28(A1),D1 
  208. 3101FC:         LSL.L #2,D1 
  209. 3101FE:         MOVE.L #3EA,8(A0,D1.L)
  210. # inpkt!pkt.type := act.read
  211. 310206:         MOVE.L 14(A1),D1 
  212. 31020A:         LSL.L #2,D1 
  213. 31020C:         MOVE.L #3E9,8(A0,D1.L) 
  214. # node!dev.task := taskid()
  215. 310214:         MOVE.L #164,D0 
  216. 31021A:         MOVE.L 38(A2),A4  ;tadkid()
  217. 31021E:         JSR (A5) 
  218. 310220:         MOVE.L 154(A1),D2 
  219. 310224:         LSL.L #2,D2 
  220. 310226:         MOVE.L D1,8(A0,D2.L) 
  221. #
  222. # // Finished with parameter packer...send back...
  223. #
  224. # returnpkt( park.pkt, TRUE )
  225. 31022A:         MOVE.L #FFFFFFFF,D2 
  226. 31022C:         MOVE.L (A1),D1 
  227. 31022E:         MOVE.L #164,D0 
  228. 310234:         MOVE.L C4(A2),A4 
  229. 310238:         JSR (A5)
  230. #
  231. # // This is the main repeat loop waiting for an event
  232. #
  233. # $( LET p = taskwait() 
  234. 31023A:         MOVE.L #164,D0 
  235. 310240:         MOVE.L A4(A2),A4 
  236. 310244:         JSR (A5)
  237. 310246:         MOVE.L D1,158(A1)
  238. #
  239. # SWITCHON p!pkt.type INTO 
  240. 31024A:         BRA 310426
  241. # CASE ????:
  242. 31024E:         MOVE.L 158(A1),D1 
  243. 310252:         LSL.L #2,D1 
  244. 310254:         MOVE.L 14(A0,D1.L),15C(A1) 
  245. 31025A:         TST.L 14C(A1) 
  246. 31025E:         BEQ 31027E 
  247. 310262:         MOVE.L #CA,D3 
  248. 310268:         MOVE.L #0,D2 
  249. 31026A:         MOVE.L 158(A1),D1 
  250. 31026E:         MOVE.L #16C,D0 
  251. 310274:         MOVE.L C4(A2),A4 
  252. 310278:         JSR (A5) 
  253. 31027A:         BRA 310474 
  254. #
  255. # CASE ????:
  256. 31027E:         MOVE.L #FFFFFFFF,D1 
  257. 310280:         MOVE.L D1,14C(A1) 
  258. 310284:         MOVE.L 15C(A1),D2 
  259. 310288:         LSL.L #2,D2 
  260. 31028A:         MOVE.L D1,4(A0,D2.L) 
  261. 31028E:         MOVE.L 15C(A1),D2 
  262. 310292:         LSL.L #2,D2 
  263. 310294:         MOVE.L #3ED,24(A0,D2.L) 
  264. 31029C:         MOVE.L D1,D2 
  265. 31029E:         MOVE.L 158(A1),D1 
  266. 3102A2:         MOVE.L #16C,D0 
  267. 3102A8:         MOVE.L C4(A2),A4 
  268. 3102AC:         JSR (A5) 
  269. 3102AE:         BRA 310474 
  270. #
  271. # CASE ????:               
  272. 3102B2:         MOVE.L 158(A1),D1 
  273. 3102B6:         LSL.L #2,D1 
  274. 3102B8:         MOVE.L 14(A0,D1.L),15C(A1) 
  275. 3102BE:         TST.L 150(A1) 
  276. 3102C2:         BEQ 3102E2 
  277. 3102C6:         MOVE.L #CA,D3 
  278. 3102CC:         MOVE.L #0,D2 
  279. 3102CE:         MOVE.L 158(A1),D1 
  280. 3102D2:         MOVE.L #16C,D0 
  281. 3102D8:         MOVE.L C4(A2),A4 
  282. 3102DC:         JSR (A5) 
  283. 3102DE:         BRA 310474 
  284. #
  285. # CASE ????:
  286. 3102E2:         MOVE.L #FFFFFFFF,D1 
  287. 3102E4:         MOVE.L D1,150(A1) 
  288. 3102E8:         MOVE.L 15C(A1),D2 
  289. 3102EC:         LSL.L #2,D2 
  290. 3102EE:         MOVE.L D1,4(A0,D2.L) 
  291. 3102F2:         MOVE.L 15C(A1),D2 
  292. 3102F6:         LSL.L #2,D2 
  293. 3102F8:         MOVE.L #3EE,24(A0,D2.L) 
  294. 310300:         MOVE.L D1,D2 
  295. 310302:         MOVE.L 158(A1),D1 
  296. 310306:         MOVE.L #16C,D0 
  297. 31030C:         MOVE.L C4(A2),A4 
  298. 310310:         JSR (A5) 
  299. 310312:         BRA 310474 
  300. #
  301. # CASE ????:
  302. 310316:         MOVE.L 158(A1),D1 
  303. 31031A:         LSL.L #2,D1 
  304. 31031C:         CMP.L #3ED,14(A0,D1.L) 
  305. 310324:         BNE 310330 
  306. 310328:         CLR.L 14C(A1) 
  307. 31032C:         BRA 310334 
  308. 310330:         CLR.L 150(A1) 
  309. 310334:         TST.L 14C(A1) 
  310. 310338:         BNE 31034E 
  311. 31033C:         TST.L 150(A1) 
  312. 310340:         BNE 31034E 
  313. 310344:         MOVE.L 154(A1),D1 
  314. 310348:         LSL.L #2,D1 
  315. 31034A:         CLR.L 8(A0,D1.L) 
  316. 31034E:         MOVE.L #FFFFFFFF,D2 
  317. 310350:         MOVE.L 158(A1),D1 
  318. 310354:         MOVE.L #168,D0 
  319. 31035A:         MOVE.L C4(A2),A4 
  320. 31035E:         JSR (A5) 
  321. 310360:         BRA 310474 
  322. #
  323. # CASE ????:
  324. 310364:         MOVE.L 158(A1),14(A1) 
  325. 31036A:         MOVE.L 8(A1),D2 
  326. 31036E:         MOVE.L 3C(A1),D1 
  327. 310372:         MOVE.L #168,D0 
  328. 310378:         LEA 4E4(A4),A4 
  329. 31037C:         JSR (A5) 
  330. 31037E:         BRA 310474 
  331. #
  332. # CASE ????:
  333. 310382:         MOVE.L 158(A1),28(A1) 
  334. 310388:         MOVE.L C(A1),D2 
  335. 31038C:         MOVE.L BC(A1),D1 
  336. 310390:         MOVE.L #168,D0 
  337. 310396:         LEA 4E4(A4),A4 
  338. 31039A:         JSR (A5) 
  339. 31039C:         BRA 310474 
  340. #
  341. # CASE ????:
  342. 3103A0:         MOVE.L 158(A1),8(A1) 
  343. 3103A6:         MOVE.L 14(A1),D4 
  344. 3103AA:         MOVE.L 158(A1),D3 
  345. 3103AE:         MOVE.L #2,D2 
  346. 3103B0:         MOVE.L 3C(A1),D1 
  347. 3103B4:         MOVE.L #168,D0 
  348. 3103BA:         LEA 4A0(A4),A4 
  349. 3103BE:         JSR (A5) 
  350. 3103C0:         CLR.L 14(A1) 
  351. 3103C4:         BRA 310474 
  352. #
  353. # CASE ????:
  354. 3103C8:         MOVE.L 158(A1),C(A1) 
  355. 3103CE:         MOVE.L 28(A1),D4 
  356. 3103D2:         MOVE.L 158(A1),D3 
  357. 3103D6:         MOVE.L #3,D2 
  358. 3103D8:         MOVE.L BC(A1),D1 
  359. 3103DC:         MOVE.L #168,D0 
  360. 3103E2:         LEA 4A0(A4),A4 
  361. 3103E6:         JSR (A5) 
  362. 3103E8:         CLR.L 28(A1) 
  363. 3103EC:         BRA 310474 
  364. #
  365. # DEFAULT:
  366. 3103F0:         TST.L 14C(A1) 
  367. 3103F4:         BNE 31040A 
  368. 3103F8:         TST.L 150(A1) 
  369. 3103FC:         BNE 31040A 
  370. 310400:         MOVE.L 154(A1),D1 
  371. 310404:         LSL.L #2,D1 
  372. 310406:         CLR.L 8(A0,D1.L) 
  373. 31040A:         MOVE.L #D1,D3 
  374. 310410:         MOVE.L #0,D2 
  375. 310412:         MOVE.L 158(A1),D1 
  376. 310416:         MOVE.L #168,D0 
  377. 31041C:         MOVE.L C4(A2),A4 
  378. 310420:         JSR (A5) 
  379. 310422:         BRA 310474 
  380. #
  381. # // SWITCHON p!pkt.type INTO 
  382. 310426:         MOVE.L 158(A1),D1 
  383. 31042A:         LSL.L #2,D1 
  384. 31042C:         MOVE.L 8(A0,D1.L),D1 
  385.  
  386. 310430:         MOVE.L #52,D2 
  387. 310432:         CMP.L D2,D1 
  388. 310434:         BEQ 3103A0 
  389.  
  390. 310438:         MOVE.L #57,D3 
  391. 31043A:         CMP.L D3,D1 
  392. 31043C:         BEQ 3103C8 
  393.  
  394. 31043E:         CMP.L #3E9,D1 
  395. 310444:         BEQ 310364 
  396.  
  397. 310448:         CMP.L #3EA,D1 
  398. 31044E:         BEQ 310382 
  399.  
  400. 310452:         CMP.L #3ED,D1 
  401. 310458:         BEQ 31024E 
  402.  
  403. 31045C:         CMP.L #3EE,D1 
  404. 310462:         BEQ 3102B2 
  405.  
  406. 310466:         CMP.L #3EF,D1 
  407. 31046C:         BEQ 310316 
  408. 310470:         BRA 3103F0 
  409.  
  410. # $) REPEATWHILE open |
  411. 310474:         TST.L 14C(A1) 
  412. 310478:         BNE 31023A 
  413. #    ??? = 0
  414. 31047C:         TST.L 150(A1) 
  415. 310480:         BNE 31023A
  416. #    outpkt = 0 |
  417. 310484:         TST.L 28(A1) 
  418. 310488:         BEQ 31023A 
  419. #    inpkt = 0
  420. 31048C:         TST.L 14(A1) 
  421. 310490:         BEQ 31023A 
  422. #
  423. # // Termination
  424. #
  425. # CloseDevice( IOB )
  426. 310494:         MOVE.L 3C(A1),D1 
  427. 310498:         MOVE.L #164,D0 
  428. 31049E:         MOVE.L 80(A2),A4 
  429. 3104A2:         JSR (A5) 
  430. 3104A4:         JMP (A6) 
  431. #
  432. # $)               
  433. 3104A6:         NOP
  434.                 CNOP    0,4
  435. 3104A8:         DC.B    14, 'serial.device',0
  436.                 CNOP    0,4
  437. 3104B8:         DC.B    16, 'parallel.device',0
  438.                 CNOP    0,4
  439. 3104C8:         DC.B    15, 'printer.device',0
  440.                
  441. 3104DC:         ADD.B #[2,(A3)+ 
  442. #
  443. # // Handle an IO request.  Passed command, transmission packet (tp)
  444. # // and request packet (rp). rp contains buffer and length in arg2/3
  445. # AND handle.request(IOB, command, rp, tp ) BE
  446. # $(
  447. #    LET buff  = rp!pkt.arg2 
  448. 3104E0:         MOVE.W 0(A4),A0 
  449. 3104E4:         MOVE.L D3,D5 
  450. 3104E6:         LSL.L #2,D5
  451. 3104E8:         MOVE.L 18(A0,D5.L),10(A1) 
  452. #    LET len   = rp!pkt.arg3
  453. 3104EE:         MOVE.L 1C(A0,D5.L),14(A1) 
  454. 3104F4:         CLR.L 34(A1)
  455. #    SetIO( IOB, IO.data, buff )
  456. 3104F8:         MOVE.L 1C(A0,D5.L),D4 
  457. 3104FC:         MOVE.L 2C(A1),D3 
  458. 310500:         MOVE.L #$,D0 
  459. 310502:         MOVE.L 18(A2),A4 
  460. 310506:         JSR (A5)
  461. #    putlong( IOB, IO.data, buff )
  462. 310508:         MOVE.L 10(A1),D3 
  463. 31050C:         MOVE.L #(,D2 
  464. 31050E:         MOVE.L (A1),D1 
  465. 310510:         MOVE.L #$,D0 
  466. 310512:         MOVE.L 1BC(A2),A4 
  467. 310516:         JSR (A5) 
  468. #    SendIO(IOB, tp)               
  469. 310518:         MOVE.L C(A1),D2 
  470. 31051C:         MOVE.L (A1),D1 
  471. 31051E:         MOVE.L #$,D0 
  472. 310520:         MOVE.L 58(A2),A4 
  473. 310524:         JSR (A5) 
  474. # $)
  475. 310526:         JMP (A6) 
  476. #
  477. # // Handle a returning IO request.  The user request packet is
  478. # // passed as p, and must be returned with success/failure message.
  479. # AND handle.return(IOB, p ) BE
  480. # $(
  481. #    LET errcode = IOB O.error
  482. 310528:         MOVE.L D1,D3 
  483. 31052A:         LSL.L #@,D3 
  484. 31052C:         MOVE.L #@,D4 
  485. 31052E:         MOVE.B 1F(A0,D3.L),D4 
  486. 310532:         MOVE.L D4,8(A1) 
  487. #    LET len = getlong( IOB, IO.actual )
  488. 310536:         MOVE.L # ,D2 
  489. 310538:         MOVE.L #@,D0 
  490. 31053A:         MOVE.L 1B8(A2),A4 
  491. 31053E:         JSR (A5) 
  492. #
  493. #    TEST errcode = 0 THEN     // no error
  494. 310540:         MOVE.L D1,C(A1) 
  495. 310544:         TST.L 8(A1) 
  496. 310548:         BNE 31055E 
  497. #       returnpkt(p, len )
  498. 31054C:         MOVE.L D1,D2 
  499. 31054E:         MOVE.L 4(A1),D1 
  500. 310552:         MOVE.L #@,D0 
  501. 310554:         MOVE.L C4(A2),A4 
  502. 310558:         JSR (A5) 
  503. #    ELSE
  504. 31055A:         BRA 310570 
  505. #       returnpkt(p, -1, errcode )
  506. 31055E:         MOVE.L 8(A1),D3 
  507. 310562:         MOVE.L #@@@@,D2 
  508. 310564:         MOVE.L 4(A1),D1 
  509. 310568:         MOVE.L #@,D0 
  510. 31056A:         MOVE.L C4(A2),A4 
  511. 31056E:         JSR (A5) 
  512. 310570:         JMP (A6) 
  513. # $)
  514. #
  515. 310572:         NOP  
  516. 310574:         CNOP 0,4
  517.                 DC.L    0
  518.                 DC.L    1
  519.                 DC.L    Entry-Module
  520.                 DC.L    $6f                     111
  521. ModEnd          EQU     *
  522.                                                                                 
  523.                                                                                 
  524.                                                                                 
  525.                                                                                 
  526.                                                                                 
  527.                                                                                 
  528.                                                                                 
  529.                                                                                 
  530.